Evaluation of UTOPIA's performance in predicting MPs size dristributionsusing the monaco Monte Carlo framework¶

(https://monaco.readthedocs.io/en/latest/)¶

With this script we preform an evaluation of UTOPIA's size distribution predictive capacity by comparing predicted size distributions in targeted compartmanes aginst observed MPs size distributions reported in the compilation of published datasets by Kooi et al.

Import the necessary libraries¶

In [1]:
from utopia.monte_carlo.montecarlo_analysis_paper import run_mc_analysis_paper, set_emission, sim_to_dataframe, reshape_mc_results
from utopia.monte_carlo.monte_carlo_helpers import *
from utopia.utopia import utopiaModel
import numpy as np
import scipy.stats as st
import pandas as pd
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\monaco\dvars_sensitivity.py:18: UserWarning: Consider installing numba for better performance
  warn("Consider installing numba for better performance", UserWarning)

Load the UTOPIA's default configuration parameters¶

In [2]:
data_data = utopiaModel.load_json_file("data/default_data.json")
config_data = utopiaModel.load_json_file("data/default_config.json")

Define the parameter distributions for the Monte Carlo simulation.¶

Transform the discrete distributions to continuous distributions for compatibility with the current montecarlo function

In [3]:
import numpy as np
# To reproduce Rakesh results, use these following discrete values to then generate distributions (lognormal and uniform) from which to sample:

# Plastic density (mpdensity): [900, 1100, 1500] kg/m³ 
# Fragmentation style (FI): [0, 0.3, 0.5, 0.7, 1.0] - ranging from more erosive to more explosive fragmentation 
# Discorporation half time (thalf_deg): [316,1000,10000, 31600, 100000] days 
# Fragmentation timescale (thalf_frag): [10, 31.6, 100, 316] days
# your discrete support values

vals_density = np.array([900, 1100, 1500])
vals_FI = np.array([0, 0.3, 0.5, 0.7, 1.0])
vals_deg = np.array([316, 1000, 10000, 31600, 100000])
vals_frag = np.array([10, 31.6, 100, 316])

def lognorm_params_from_values(values, sigma):
    """
    Return (s, scale) for scipy.stats.lognorm given target values.
    sigma = shape parameter (spread in log space).
    We center the lognormal at the geometric mean of the values.
    """
    mu = np.mean(np.log(values))  # geometric mean in log-space
    scale = np.exp(mu - (sigma**2) / 2)
    return sigma, scale

# choose sigma to control spread (tune manually!)
s_deg, scale_deg = lognorm_params_from_values(vals_deg, sigma=0.5)
s_frag, scale_frag = lognorm_params_from_values(vals_frag, sigma=0.8)
s_density, scale_density = lognorm_params_from_values(vals_density, sigma=0.1)
s_FI, scale_FI = lognorm_params_from_values(vals_FI[vals_FI > 0], sigma=0.5)  # avoid zero for lognorm

param_distributions = {
    "MPdensity_kg_m3": ("lognorm", {"s": s_density, "scale": scale_density}),
    "FI": ("uniform", {"loc": 0.0, "scale": 1.0}),
    "t_half_deg_free": ("lognorm", {"s": s_deg, "scale": scale_deg}),
    "t_frag_gen_FreeSurfaceWater": ("lognorm", {"s": s_frag, "scale": scale_frag})
}
In [4]:
# Visualise the distributions by plotting

for psrsm in param_distributions:
    plot_distribution_from_dict(psrsm, param_distributions)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [5]:
# Recent studies have challenged the density of biofilm used here (1388 kg m-3) as being too high. see e.g. # https://doi.org/10.1186/s43591-024-00098-2 
# Consider testing chnages in biofouling density
In [6]:
# Set emission scenarios to run that are compatible for comparison with observations data from Kooi et al.

##############################################
# DEFINE ARTICLE -> EMISSION SCENARIOS
##############################################

overlay_emission_scenarios = {
    "Sea Sediment | Bergmann":["Ocean_Surface_Water","Coast_Surface_Water","Coast_Column_Water"],
    "Sea Surface all | Cai":["Surface_Freshwater","Coast_Surface_Water","Impacted_Soil_Surface"],
    "Sea Surface Fragments | Enders":["Ocean_Surface_Water","Coast_Surface_Water"],
    "Sea Surface Fibers | Enders":["Ocean_Surface_Water","Coast_Surface_Water"],
    "Fragments in water | Eo":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Fibers in water | Eo":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Fragments in sediment | Eo":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Fibers in sediment | Eo":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Sea Surface all | Erni-Cassola":["Coast_Surface_Water","Impacted_Soil_Surface"],
    "Fresh water sediments | Imhof":["Surface_Freshwater","Impacted_Soil_Surface"],
    "Sea Surface all | Isobe L1":["Surface_Freshwater","Coast_Surface_Water"],
    "Sea Surface all | Isobe L2":["Surface_Freshwater","Coast_Surface_Water"],
    "Sea Surface all | Isobe L3":["Surface_Freshwater","Coast_Surface_Water"],
    "Sea Surface all | Isobe L4":["Surface_Freshwater","Coast_Surface_Water"],
    "FP all | Scheurer":["Impacted_Soil_Surface"],
    "Sea Surface Fragments | Song":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Sea Surface Fibers | Song":["Impacted_Soil_Surface","Surface_Freshwater"],
    "Sea Surface all | Zhang":["Coast_Surface_Water","Surface_Freshwater"]}
    
    
    
    
# DEFINE ARTICLE->COMPARTMENTS MAPPING
#############################################
overlay_compartments_mapping = {
    "Sea Sediment | Bergmann": ["Sediment_Coast", "Sediment_Ocean"],
    "Sea Surface all | Cai": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Sea Surface Fragments | Enders": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Sea Surface Fibers | Enders": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Fragments in water | Eo": ["Bulk_Freshwater", "Surface_Freshwater"],
    "Fibers in water | Eo": ["Bulk_Freshwater", "Surface_Freshwater"],
    "Fragments in sediment | Eo": ["Sediment_Ocean", "Sediment_Coast", "Sediment_Freshwater"],
    "Fibers in sediment | Eo": ["Sediment_Ocean", "Sediment_Coast", "Sediment_Freshwater"],
    "Sea Surface all | Erni-Cassola": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Fresh water sediments | Imhof": ["Bulk_Freshwater", "Surface_Freshwater"],
    "Sea Surface all | Isobe L1": ["Coast_Surface_Water", "Ocean_Surface_Water"], 
    "Sea Surface all | Isobe L2": ["Coast_Surface_Water", "Ocean_Surface_Water"], 
    "Sea Surface all | Isobe L3": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Sea Surface all | Isobe L4": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "FP all | Scheurer": ["Impacted_Soil_Surface", "Sediment_Freshwater"], 
    "Sea Surface Fragments | Song": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Sea Surface Fibers | Song": ["Coast_Surface_Water", "Ocean_Surface_Water"],
    "Sea Surface all | Zhang": ["Coast_Surface_Water", "Ocean_Surface_Water"]
}

# NOTE!I have ch anged the mapping for the FP all | Scheurer study compared to the original data from Rakesh. Samples were collected in floodplain soils, so the impacted_soil_surface compartment and freshwater sediment compartment have been included in the compartment mapping.might be more appropriate. Since the model does not simulate floodplain soils as a separate compartment.?

# NOTE 2! Changed entry in overlay compatrments mapping for the "Fragments in sediment | Eo" and "Fibers in sediment | Eo" studies to exclude the beaches compartments. 
In [7]:
# Set emission scenarios according to the mapping defined above to the run the model for each parameter combination using the Monte Carlo framework and perform the comparison with the observed data according to mapping.

Test difference in results if run with distributions or single values for the parameters for one article

In [8]:
import seaborn as sns
import matplotlib.pyplot as plt
from utopia.monte_carlo.montecarlo_analysis_paper import run_and_plot_top_results

MC_simulations_results_all={}
for art in overlay_emission_scenarios.keys():
    print(f"Running Monte Carlo analysis for article: {art}")
    MC_simulations_results=[]
    for comp in overlay_emission_scenarios[art]:
        # Set emissions to that compartment and include it in base_data file
        data_data["emiss_dict_g_s"]= set_emission(data_data["emiss_dict_g_s"].copy(), comp, "e", 100)
        
        
        #Run Monte Carlo analysis for each emission scenario and targer compartment
        for comp_T in overlay_compartments_mapping[art]:
            emission_comp=comp
            target_comp=comp_T
            sim= run_mc_analysis_paper(
            base_config=config_data,
            base_data=data_data,
            param_distributions=param_distributions,
            n_cases=50,art=art,emission_comp=emission_comp,target_comp=target_comp
        )
        
            # Convert sim results to dataframe
            df_MC_results = sim_to_dataframe(sim)
            
            
            MC_simulations_results.append(df_MC_results)
    MC_simulations_results = pd.concat(MC_simulations_results, ignore_index=True)
    input_params=["MPdensity_kg_m3", "FI", "t_half_deg_free", "t_frag_gen_FreeSurfaceWater"]
    tidy_mc_results=reshape_mc_results(MC_simulations_results, input_params, art)
    results_sorted_art = tidy_mc_results.sort_values("RMSE", ascending=True)
    # Keep e.g. top 20 best-fitting combinations
    top_results_art = results_sorted_art.head(20)
    run_and_plot_top_results(top_results_art[0:2],data_data, config_data)
    

    # Correlation heatmap for the top results
    corr = top_results_art[0:20][["MPdensity_kg_m3", "FI", "t_half_deg_free", "t_frag_gen_FreeSurfaceWater"]].corr()

    plt.figure(figsize=(8,6))
    sns.heatmap(corr, annot=True, cmap="coolwarm", center=0)
    plt.title("Correlation matrix (Top 20 best fits)")
    plt.show()
    
    
    MC_simulations_results_all[art]=top_results_art
    
    
        
Running Monte Carlo analysis for article: Sea Sediment | Bergmann
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6196.53 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:42,  2.33s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:21<01:39,  2.43s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:53<01:07,  2.43s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [01:00<00:56,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:11<00:44,  2.24s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:18<00:37,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:29<00:26,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:35<00:19,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:55<00:00,  2.31s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 10512.04 cases/s]
Simulation complete! Runtime: 0:01:55.659521
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9993.58 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:13<01:37,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:30,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:48<01:01,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:55,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:06<00:43,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:12<00:36,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:23<00:26,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:30<00:19,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:49<00:00,  2.19s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:49.615734
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6403.32 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:35,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:28,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:47<00:59,  2.13s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:54<00:54,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:04<00:42,  2.14s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:11<00:37,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:23<00:28,  2.34s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:30<00:22,  2.49s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:54<00:00,  2.29s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5357.39 cases/s]
Simulation complete! Runtime: 0:01:54.708156
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 24844.83 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:37,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:20<01:33,  2.28s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:49<01:01,  2.19s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:55,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:06<00:44,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:13<00:37,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:24<00:26,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:30<00:19,  2.16s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:50<00:00,  2.21s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 82467.64 cases/s]
Simulation complete! Runtime: 0:01:50.561548
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8326.33 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:13<01:36,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:28,  2.15s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:47<01:00,  2.14s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:54<00:54,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:04<00:42,  2.15s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:11<00:36,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:22<00:26,  2.25s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:29<00:19,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:48<00:00,  2.18s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:48.998665
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 4960.50 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:39,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:20<01:30,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:50<01:11,  2.54s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:59<01:07,  2.69s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:12<00:54,  2.74s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:21<00:47,  2.77s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:31<00:26,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:38<00:19,  2.15s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.33s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3660.40 cases/s]
Simulation complete! Runtime: 0:01:56.775788

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Cai
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7147.51 cases/s]
Running cases: 100%|██████████| 50/50 [01:49<00:00,  2.19s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3236.25 cases/s]
Simulation complete! Runtime: 0:01:49.524401
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8335.92 cases/s] 
Running cases: 100%|██████████| 50/50 [01:48<00:00,  2.16s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:48.160451
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7120.58 cases/s]
Running cases: 100%|██████████| 50/50 [01:43<00:00,  2.08s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6369.87 cases/s]
Simulation complete! Runtime: 0:01:43.926001
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 10066.49 cases/s]
Running cases: 100%|██████████| 50/50 [01:44<00:00,  2.09s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3751.41 cases/s]
Simulation complete! Runtime: 0:01:44.477637
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6566.32 cases/s]
Running cases: 100%|██████████| 50/50 [01:42<00:00,  2.05s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 4593.07 cases/s]
Simulation complete! Runtime: 0:01:42.762885
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7691.74 cases/s] 
Running cases: 100%|██████████| 50/50 [01:44<00:00,  2.09s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 41363.94 cases/s]
Simulation complete! Runtime: 0:01:44.543346

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fragments | Enders
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6254.55 cases/s]
Running cases: 100%|██████████| 50/50 [01:42<00:00,  2.04s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 12819.56 cases/s]
Simulation complete! Runtime: 0:01:42.194896
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8323.35 cases/s]
Running cases: 100%|██████████| 50/50 [01:44<00:00,  2.09s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 4664.38 cases/s]
Simulation complete! Runtime: 0:01:44.735392
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9053.89 cases/s] 
Running cases: 100%|██████████| 50/50 [01:43<00:00,  2.06s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:43.254464
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8151.56 cases/s]
Running cases: 100%|██████████| 50/50 [01:42<00:00,  2.05s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 2855.44 cases/s]
Simulation complete! Runtime: 0:01:42.776610

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Enders
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7142.89 cases/s]
Running cases: 100%|██████████| 50/50 [01:44<00:00,  2.10s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 23301.69 cases/s]
Simulation complete! Runtime: 0:01:44.816357
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6653.19 cases/s]
Running cases: 100%|██████████| 50/50 [01:42<00:00,  2.06s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3553.59 cases/s]
Simulation complete! Runtime: 0:01:42.834666
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8336.26 cases/s] 
Running cases: 100%|██████████| 50/50 [01:45<00:00,  2.10s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 15214.39 cases/s]
Simulation complete! Runtime: 0:01:45.199450
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 11489.36 cases/s]
Running cases: 100%|██████████| 50/50 [01:42<00:00,  2.06s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:42.811822

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in water | Eo
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7681.88 cases/s] 
Running cases: 100%|██████████| 50/50 [02:12<00:00,  2.65s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:02:12.715392
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7690.04 cases/s] 
Running cases: 100%|██████████| 50/50 [01:52<00:00,  2.26s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3292.49 cases/s]
Simulation complete! Runtime: 0:01:53.017414
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7191.63 cases/s]
Running cases: 100%|██████████| 50/50 [01:45<00:00,  2.11s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9834.24 cases/s]
Simulation complete! Runtime: 0:01:45.562975
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8330.30 cases/s]
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.28s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:53.785987

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fibers in water | Eo
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7058.50 cases/s]
Running cases: 100%|██████████| 50/50 [01:45<00:00,  2.10s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:45.073976
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6527.29 cases/s]
Running cases: 100%|██████████| 50/50 [01:44<00:00,  2.09s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 12710.78 cases/s]
Simulation complete! Runtime: 0:01:44.574259
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8192.00 cases/s]
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.32s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:56.155126
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8108.70 cases/s]
Running cases: 100%|██████████| 50/50 [01:45<00:00,  2.11s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5265.39 cases/s]
Simulation complete! Runtime: 0:01:45.661317

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in sediment | Eo
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8333.94 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:37,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:32,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:48<01:01,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:54,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:06<00:43,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:12<00:37,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:23<00:26,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:30<00:19,  2.19s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:50<00:00,  2.20s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3793.07 cases/s]
Simulation complete! Runtime: 0:01:50.209533
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9048.42 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:14<01:49,  2.49s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:22<01:43,  2.51s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:54<01:05,  2.35s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [01:01<00:56,  2.25s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:12<00:44,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:19<00:37,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:30<00:26,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:36<00:19,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.33s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 32620.19 cases/s]
Simulation complete! Runtime: 0:01:56.724187
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6765.01 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:13<01:39,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:49<01:00,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:52,  2.11s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:22<00:25,  2.09s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:28<00:18,  2.10s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:47<00:00,  2.16s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6434.17 cases/s]
Simulation complete! Runtime: 0:01:48.023986
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6790.64 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:35,  2.17s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:29,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:48<01:02,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:55,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:06<00:43,  2.19s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:13<00:37,  2.19s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:25<00:29,  2.43s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:32<00:22,  2.55s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.33s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3282.80 cases/s]
Simulation complete! Runtime: 0:01:56.676025
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5193.93 cases/s]
Running cases:  12%|█▏        | 6/50 [00:14<01:42,  2.34s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:21<01:33,  2.28s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:50<01:03,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:57<00:58,  2.33s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:10<00:52,  2.64s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:17<00:43,  2.54s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:30<00:29,  2.49s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:37<00:22,  2.48s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:59<00:00,  2.40s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7251.06 cases/s]
Simulation complete! Runtime: 0:01:59.945881
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6993.77 cases/s]
Running cases:  12%|█▏        | 6/50 [00:14<01:44,  2.38s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:52<01:06,  2.36s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:59<00:58,  2.32s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:29<00:27,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:35<00:19,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:55<00:00,  2.32s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:55.866635

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fibers in sediment | Eo
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 456.52 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:39,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:20<01:32,  2.25s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:54<01:15,  2.69s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [01:02<01:07,  2.68s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:14<00:47,  2.40s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:21<00:39,  2.31s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:32<00:26,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:38<00:19,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:58<00:00,  2.38s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 23744.93 cases/s]
Simulation complete! Runtime: 0:01:59.106595
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9383.23 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:13<01:40,  2.29s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:20<01:32,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:49<01:02,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:56<00:55,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:07<00:44,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:14<00:38,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:25<00:27,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:32<00:19,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:52<00:00,  2.24s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:52.109031
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5664.46 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:39,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:49<01:01,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:54,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:24<00:26,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:30<00:19,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:54<00:00,  2.29s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:54.392710
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6407.82 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:16<01:59,  2.71s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:23<01:40,  2.45s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:53<01:03,  2.28s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:59<00:56,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:10<00:44,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:17<00:37,  2.21s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:28<00:27,  2.29s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:35<00:20,  2.25s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:55<00:00,  2.32s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:55.947642
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8331.62 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:36,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  18%|█▊        | 9/50 [00:19<01:30,  2.20s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:48<01:00,  2.18s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:55,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  60%|██████    | 30/50 [01:07<00:46,  2.35s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  66%|██████▌   | 33/50 [01:13<00:39,  2.32s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:25<00:27,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:32<00:20,  2.25s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.27s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6371.03 cases/s]
Simulation complete! Runtime: 0:01:53.646961
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8932.03 cases/s] 
Running cases:  12%|█▏        | 6/50 [00:14<01:42,  2.33s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:52<01:10,  2.53s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [01:00<01:05,  2.62s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:33<00:29,  2.46s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:40<00:20,  2.33s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [02:01<00:00,  2.42s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 2996.74 cases/s]
Simulation complete! Runtime: 0:02:01.160901

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Erni-Cassola
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7143.86 cases/s] 
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.24s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3001.25 cases/s]
Simulation complete! Runtime: 0:01:51.955344
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6524.04 cases/s]
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.27s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 3613.54 cases/s]
Simulation complete! Runtime: 0:01:53.410372
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7311.99 cases/s]
Running cases: 100%|██████████| 50/50 [01:58<00:00,  2.37s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 10688.30 cases/s]
Simulation complete! Runtime: 0:01:58.546569
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5913.13 cases/s]
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.23s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 2989.74 cases/s]
Simulation complete! Runtime: 0:01:51.381470

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fresh water sediments | Imhof
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6250.45 cases/s]
Running cases: 100%|██████████| 50/50 [02:00<00:00,  2.41s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5209.67 cases/s]
Simulation complete! Runtime: 0:02:00.449149
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Running cases: 100%|██████████| 50/50 [01:54<00:00,  2.29s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7915.87 cases/s]
Simulation complete! Runtime: 0:01:54.714347
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8031.99 cases/s]
Running cases: 100%|██████████| 50/50 [01:54<00:00,  2.28s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:54.187658
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6063.94 cases/s]
Running cases: 100%|██████████| 50/50 [02:02<00:00,  2.44s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 78339.63 cases/s]
Simulation complete! Runtime: 0:02:02.261054

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L1
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6974.23 cases/s]
Running cases: 100%|██████████| 50/50 [01:54<00:00,  2.29s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 4251.44 cases/s]
Simulation complete! Runtime: 0:01:54.434949
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6909.89 cases/s]
Running cases: 100%|██████████| 50/50 [01:58<00:00,  2.38s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 12587.95 cases/s]
Simulation complete! Runtime: 0:01:58.816721
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8328.64 cases/s]
Running cases: 100%|██████████| 50/50 [01:52<00:00,  2.24s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:52.078358
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7490.90 cases/s]
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.34s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 11823.60 cases/s]
Simulation complete! Runtime: 0:01:57.022017

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L2
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 5668.90 cases/s]
Running cases: 100%|██████████| 50/50 [02:09<00:00,  2.58s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 13261.36 cases/s]
Simulation complete! Runtime: 0:02:09.096429
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 10001.20 cases/s]
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.28s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9160.67 cases/s]
Simulation complete! Runtime: 0:01:53.918887
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8626.35 cases/s] 
Running cases: 100%|██████████| 50/50 [02:06<00:00,  2.54s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7450.18 cases/s] 
Simulation complete! Runtime: 0:02:06.922710
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7142.40 cases/s]
Running cases: 100%|██████████| 50/50 [01:57<00:00,  2.35s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:57.624815

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L3
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7134.14 cases/s]
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.33s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8936.98 cases/s]
Simulation complete! Runtime: 0:01:56.398331
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8333.28 cases/s]
Running cases: 100%|██████████| 50/50 [02:00<00:00,  2.42s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 14975.38 cases/s]
Simulation complete! Runtime: 0:02:00.906673
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8140.80 cases/s]
Running cases: 100%|██████████| 50/50 [01:55<00:00,  2.31s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 4879.71 cases/s]
Simulation complete! Runtime: 0:01:55.764831
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8997.95 cases/s] 
Running cases: 100%|██████████| 50/50 [02:04<00:00,  2.49s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 79679.03 cases/s]
Simulation complete! Runtime: 0:02:04.632438

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L4
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7234.30 cases/s]
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.34s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 10831.84 cases/s]
Simulation complete! Runtime: 0:01:56.801949
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6130.95 cases/s]
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.23s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 30727.50 cases/s]
Simulation complete! Runtime: 0:01:51.324325
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9667.41 cases/s]
Running cases: 100%|██████████| 50/50 [02:06<00:00,  2.53s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:02:06.458414
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6425.10 cases/s]
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.24s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:52.035423

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: FP all | Scheurer
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7141.43 cases/s]
Running cases: 100%|██████████| 50/50 [02:00<00:00,  2.42s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:02:00.963463
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7370.84 cases/s]
Running cases:  12%|█▏        | 6/50 [00:13<01:37,  2.22s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  44%|████▍     | 22/50 [00:49<01:02,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  50%|█████     | 25/50 [00:55<00:56,  2.26s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  76%|███████▌  | 38/50 [01:25<00:27,  2.27s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases:  82%|████████▏ | 41/50 [01:31<00:20,  2.23s/ cases]c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.26s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 13842.59 cases/s]
Simulation complete! Runtime: 0:01:53.117368

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fragments | Song
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7818.78 cases/s]
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.23s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 18759.75 cases/s]
Simulation complete! Runtime: 0:01:51.476252
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8199.05 cases/s]
Running cases: 100%|██████████| 50/50 [02:03<00:00,  2.47s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:02:03.731757
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6246.17 cases/s]
Running cases: 100%|██████████| 50/50 [01:51<00:00,  2.23s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7586.28 cases/s]
Simulation complete! Runtime: 0:01:51.450996
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 19647.29 cases/s]
Running cases: 100%|██████████| 50/50 [02:03<00:00,  2.47s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 14405.50 cases/s]
Simulation complete! Runtime: 0:02:03.373411

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Song
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8331.29 cases/s]
Running cases: 100%|██████████| 50/50 [01:53<00:00,  2.26s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:53.184990
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8288.48 cases/s]
Running cases: 100%|██████████| 50/50 [01:48<00:00,  2.16s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 32906.83 cases/s]
Simulation complete! Runtime: 0:01:48.203121
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9077.01 cases/s] 
Running cases: 100%|██████████| 50/50 [01:56<00:00,  2.33s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 12803.13 cases/s]
Simulation complete! Runtime: 0:01:56.562173
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 9997.86 cases/s] 
Running cases: 100%|██████████| 50/50 [01:48<00:00,  2.16s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6401.95 cases/s]
Simulation complete! Runtime: 0:01:48.272930

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Zhang
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 6244.87 cases/s]
Running cases: 100%|██████████| 50/50 [01:48<00:00,  2.16s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7295.20 cases/s]
Simulation complete! Runtime: 0:01:48.280906
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 7549.42 cases/s]
Running cases: 100%|██████████| 50/50 [01:58<00:00,  2.37s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:58.682894
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8484.31 cases/s]
Running cases: 100%|██████████| 50/50 [02:05<00:00,  2.52s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:02:05.955949
Running 'UTOPIA_MC_simulation' Monte Carlo simulation with 50/50 cases...
Drawing random samples for 4 input variables via the 'sobol_random' method... Done
Generating cases... Done
Preprocessing cases: 100%|██████████| 50/50 [00:00<00:00, 8153.46 cases/s] 
Running cases: 100%|██████████| 50/50 [01:59<00:00,  2.39s/ cases]
Postprocessing cases: 100%|██████████| 50/50 [00:00<?, ? cases/s]
Simulation complete! Runtime: 0:01:59.355124

No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [9]:
combined_df = pd.concat(MC_simulations_results_all.values(), ignore_index=True)
In [10]:
combined_df
Out[10]:
Case Observed_dataset Emission_Compartment Target_Compartment RMSE R2 Slope Spearman_r Pass_Spearman MPdensity_kg_m3 FI t_half_deg_free t_frag_gen_FreeSurfaceWater
0 294 Sea Sediment | Bergmann Coast_Column_Water Sediment_Ocean 0.290099 -0.378658 -2.909771 -1.0 True 1156.890442 0.466481 1919.420809 21.279529
1 194 Sea Sediment | Bergmann Coast_Surface_Water Sediment_Ocean 0.295999 -0.435307 -2.883242 -1.0 True 1156.890442 0.466481 1919.420809 21.279529
2 258 Sea Sediment | Bergmann Coast_Column_Water Sediment_Ocean 0.306841 -0.542379 -2.655127 -1.0 True 1334.859380 0.269348 2665.785177 31.280483
3 158 Sea Sediment | Bergmann Coast_Surface_Water Sediment_Ocean 0.314419 -0.619506 -2.627525 -1.0 True 1334.859380 0.269348 2665.785177 31.280483
4 276 Sea Sediment | Bergmann Coast_Column_Water Sediment_Ocean 0.315231 -0.627886 -2.743540 -1.0 True 1077.506525 0.422796 3492.064242 44.690758
... ... ... ... ... ... ... ... ... ... ... ... ... ...
355 43 Sea Surface all | Zhang Coast_Surface_Water Coast_Surface_Water 1.883332 -5.893155 -1.835870 -1.0 True 1209.526294 0.950314 3983.784537 10.687603
356 103 Sea Surface all | Zhang Surface_Freshwater Coast_Surface_Water 1.924554 -6.198213 -1.826492 -1.0 True 1142.043586 0.902573 3158.382174 79.694563
357 129 Sea Surface all | Zhang Surface_Freshwater Coast_Surface_Water 2.035415 -7.051384 -1.950304 -1.0 True 1102.540686 0.906506 4965.649411 61.779684
358 17 Sea Surface all | Zhang Coast_Surface_Water Coast_Surface_Water 2.048385 -7.154314 -1.925818 -1.0 True 1052.671922 0.811533 3073.415520 14.554329
359 5 Sea Surface all | Zhang Coast_Surface_Water Coast_Surface_Water 2.119518 -7.730487 -1.975768 -1.0 True 1067.147583 0.814583 7649.971822 27.484251

360 rows × 13 columns

In [12]:
# Save results to csv
combined_df.to_csv("UTOPIA_paper_results_long.csv", index=False)

Top 20 best fitting results for each observed dataset

In [ ]:
# Read data from CSV if needed
combined_results = pd.read_csv("UTOPIA_paper_results.csv")
df=combined_results.copy()
In [16]:
combined_results_shorted=combined_df.sort_values("RMSE", ascending=True)
combined_results_shorted
Out[16]:
Case Observed_dataset Emission_Compartment Target_Compartment RMSE R2 Slope Spearman_r Pass_Spearman MPdensity_kg_m3 FI t_half_deg_free t_frag_gen_FreeSurfaceWater
320 172 Sea Surface Fibers | Song Surface_Freshwater Ocean_Surface_Water 0.165232 0.694254 -1.216664 -1.0 True 990.707153 0.296573 4606.795101 16.363625
220 172 Sea Surface all | Isobe L2 Coast_Surface_Water Ocean_Surface_Water 0.187883 0.563015 -0.947614 -1.0 True 990.707153 0.296573 4606.795101 16.363625
240 172 Sea Surface all | Isobe L3 Coast_Surface_Water Ocean_Surface_Water 0.188438 0.550417 -0.947614 -1.0 True 990.707153 0.296573 4606.795101 16.363625
221 38 Sea Surface all | Isobe L2 Surface_Freshwater Coast_Surface_Water 0.192658 0.540521 -1.017510 -1.0 True 954.198820 0.403270 11741.727561 15.729051
222 6 Sea Surface all | Isobe L2 Surface_Freshwater Coast_Surface_Water 0.192740 0.540131 -0.926349 -1.0 True 938.199911 0.224775 1827.090958 58.014555
... ... ... ... ... ... ... ... ... ... ... ... ... ...
295 24 FP all | Scheurer Impacted_Soil_Surface Impacted_Soil_Surface 3.569895 -37.591433 -2.736023 -1.0 True 1283.675473 0.213213 4250.619555 88.914569
296 4 FP all | Scheurer Impacted_Soil_Surface Impacted_Soil_Surface 3.585547 -37.930575 -2.752834 -1.0 True 1183.945885 0.387262 4865.625691 162.674424
297 23 FP all | Scheurer Impacted_Soil_Surface Impacted_Soil_Surface 3.597856 -38.198326 -3.079429 -1.0 True 1397.540405 0.969836 5627.571199 50.288792
298 12 FP all | Scheurer Impacted_Soil_Surface Impacted_Soil_Surface 3.620077 -38.684019 -2.837739 -1.0 True 1170.689441 0.163532 10975.160488 41.971349
299 49 FP all | Scheurer Impacted_Soil_Surface Impacted_Soil_Surface 3.655904 -39.473391 -3.016343 -1.0 True 1045.328666 0.568219 12843.291904 60.286672

360 rows × 13 columns

In [14]:
from utopia.monte_carlo.montecarlo_analysis_paper import run_and_plot_top_results
run_and_plot_top_results(combined_results_shorted[0:10],data_data, config_data)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [15]:
import seaborn as sns
import matplotlib.pyplot as plt

# Correlation heatmap for the top results
corr = combined_results_shorted[0:19][["MPdensity_kg_m3", "FI", "t_half_deg_free", "t_frag_gen_FreeSurfaceWater"]].corr()

plt.figure(figsize=(8,6))
sns.heatmap(corr, annot=True, cmap="coolwarm", center=0)
plt.title("Correlation matrix (Top 20 best fits)")
plt.show()
No description has been provided for this image
In [17]:
# Pair-wise relationships for the top results
sns.pairplot(
    combined_results_shorted[0:19],
    vars=["MPdensity_kg_m3", "FI", "t_half_deg_free", "t_frag_gen_FreeSurfaceWater"],
    hue="Target_Compartment",
    corner=True
)
plt.suptitle("Parameter relationships for best-fitting runs", y=1.02)
plt.show()
No description has been provided for this image

After the model has ben run recover results from csv and load them again

In [18]:
# Read data from CSV if needed
combined_results = pd.read_csv("UTOPIA_paper_results_long.csv")
df=combined_results.copy()
In [19]:
combined_results_shorted=df.sort_values("RMSE", ascending=True)
In [20]:
combined_results_shorted[0:20]
Out[20]:
Case Observed_dataset Emission_Compartment Target_Compartment RMSE R2 Slope Spearman_r Pass_Spearman MPdensity_kg_m3 FI t_half_deg_free t_frag_gen_FreeSurfaceWater
320 172 Sea Surface Fibers | Song Surface_Freshwater Ocean_Surface_Water 0.165232 0.694254 -1.216664 -1.0 True 990.707153 0.296573 4606.795101 16.363625
220 172 Sea Surface all | Isobe L2 Coast_Surface_Water Ocean_Surface_Water 0.187883 0.563015 -0.947614 -1.0 True 990.707153 0.296573 4606.795101 16.363625
240 172 Sea Surface all | Isobe L3 Coast_Surface_Water Ocean_Surface_Water 0.188438 0.550417 -0.947614 -1.0 True 990.707153 0.296573 4606.795101 16.363625
221 38 Sea Surface all | Isobe L2 Surface_Freshwater Coast_Surface_Water 0.192658 0.540521 -1.017510 -1.0 True 954.198820 0.403270 11741.727561 15.729051
222 6 Sea Surface all | Isobe L2 Surface_Freshwater Coast_Surface_Water 0.192740 0.540131 -0.926349 -1.0 True 938.199911 0.224775 1827.090958 58.014555
241 38 Sea Surface all | Isobe L3 Surface_Freshwater Coast_Surface_Water 0.194665 0.520214 -1.017510 -1.0 True 954.198820 0.403270 11741.727561 15.729051
321 141 Sea Surface Fibers | Song Surface_Freshwater Coast_Surface_Water 0.195646 0.571334 -1.043427 -1.0 True 980.681203 0.663796 3357.094251 28.157041
242 6 Sea Surface all | Isobe L3 Surface_Freshwater Coast_Surface_Water 0.196303 0.512105 -0.926349 -1.0 True 938.199911 0.224775 1827.090958 58.014555
243 75 Sea Surface all | Isobe L3 Surface_Freshwater Ocean_Surface_Water 0.202735 0.479608 -1.120133 -1.0 True 970.257514 0.520478 6126.121830 35.867234
223 75 Sea Surface all | Isobe L2 Surface_Freshwater Ocean_Surface_Water 0.205635 0.476535 -1.120133 -1.0 True 970.257514 0.520478 6126.121830 35.867234
120 217 Fragments in sediment | Eo Surface_Freshwater Sediment_Coast 0.210465 0.830557 -1.757989 -1.0 True 1052.671922 0.811533 3073.415520 14.554329
121 205 Fragments in sediment | Eo Surface_Freshwater Sediment_Coast 0.219214 0.816177 -1.605927 -1.0 True 1067.147583 0.814583 7649.971822 27.484251
260 56 Sea Surface all | Isobe L4 Surface_Freshwater Ocean_Surface_Water 0.219473 0.496743 -1.260351 -1.0 True 938.199911 0.224775 1827.090958 58.014555
200 56 Sea Surface all | Isobe L1 Surface_Freshwater Ocean_Surface_Water 0.219608 0.717863 -1.260351 -1.0 True 938.199911 0.224775 1827.090958 58.014555
261 75 Sea Surface all | Isobe L4 Surface_Freshwater Ocean_Surface_Water 0.219823 0.495135 -1.120133 -1.0 True 970.257514 0.520478 6126.121830 35.867234
122 215 Fragments in sediment | Eo Surface_Freshwater Sediment_Coast 0.220993 0.813182 -1.619336 -1.0 True 1266.860208 0.753409 4509.321025 33.637734
180 188 Fresh water sediments | Imhof Impacted_Soil_Surface Surface_Freshwater 0.221267 0.528537 -2.830528 -1.0 True 954.198820 0.403270 11741.727561 15.729051
140 223 Fibers in sediment | Eo Surface_Freshwater Sediment_Coast 0.222438 -0.005150 -1.127829 -1.0 True 1397.540405 0.969836 5627.571199 50.288792
262 41 Sea Surface all | Isobe L4 Surface_Freshwater Coast_Surface_Water 0.222587 0.482358 -1.043427 -1.0 True 980.681203 0.663796 3357.094251 28.157041
263 91 Sea Surface all | Isobe L4 Surface_Freshwater Ocean_Surface_Water 0.222801 0.481365 -1.271236 -1.0 True 980.681203 0.663796 3357.094251 28.157041
In [21]:
import seaborn as sns
import matplotlib.pyplot as plt

# Correlation heatmap for the top results
corr = combined_results_shorted[0:19][["MPdensity_kg_m3", "FI", "t_half_deg_free", "t_frag_gen_FreeSurfaceWater"]].corr()

plt.figure(figsize=(8,6))
sns.heatmap(corr, annot=True, cmap="coolwarm", center=0)
plt.title("Correlation matrix (Top 20 best fits)")
plt.show()
No description has been provided for this image

CONTINUE HERE

In [ ]:
# Write up conclusions and next steps

# Best fits corresponds to 2 archetypical types of plastic:
# 1. Low density plastic (LDP) provides best fits to the monitoring data when framgentation index is low (more erosive fragmentation) and and disintegration half-life is short. Fragmentation timescale seems to not play a significant role according to the correlation matrix.
# 2. High density plastic (HDP), provides best fits when fragmentation index is high (more explosive fragmentation) and disintegration half-life is long. Fragmentation timescale seems to not play a significant role according to the correlation matrix.

# We will run scenarios for the two archetipycal plastics and compare results to the articles data to plot best fits against observed data.
In [ ]:
# SET UP SCENARIOS FOR THE TWO ARCHETYPICAL PLASTICS
# 1. Low density plastic (LDP) provides best fits to the monitoring data when framgentation index is low (more erosive fragmentation) and and disintegration half-life is short. Fragmentation timescale seems to not play a significant role according to the correlation matrix.

Run model for Low density polymer (LDP) scenario derived from MC

In [ ]:
# Set up scenario simulation for LDP and HDP
from utopia.utopia import utopiaModel
# Define modifications (follow the structure provided in the default configuration data (data_data))
modifications = {
    "MPdensity_kg_m3": 940,
    "MP_composition": "LDP",
    'FI': 0.2,
    "t_half_deg_free": 2000,
    "t_frag_gen_FreeSurfaceWater": 50
}
In [ ]:
LDP_data=data_data.copy()
LDP_data["MPdensity_kg_m3"]= modifications["MPdensity_kg_m3"]
LDP_data["MP_composition"]= modifications["MP_composition"]
LDP_data["FI"]= modifications["FI"]
LDP_data["t_half_deg_free"]= modifications["t_half_deg_free"]
LDP_data["t_frag_gen_FreeSurfaceWater"]= modifications["t_frag_gen_FreeSurfaceWater"]    
LDP_data
Out[ ]:
{'MPdensity_kg_m3': 940,
 'MP_composition': 'LDP',
 'shape': 'sphere',
 'MP_form': 'freeMP',
 'FI': 0.2,
 't_half_deg_free': 2000,
 'heter_deg_factor': 10,
 'biof_deg_factor': 0.5,
 'factor_deepWater_soilSurface': 10,
 'factor_sediment': 100,
 't_frag_gen_FreeSurfaceWater': 50,
 'biof_frag_factor': 2,
 'heter_frag_factor': 100,
 'emiss_dict_g_s': {'Ocean_Surface_Water': {'a': 0,
   'b': 0,
   'c': 0,
   'd': 0,
   'e': 100},
  'Ocean_Mixed_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Ocean_Column_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Coast_Surface_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Coast_Column_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Surface_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Bulk_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Ocean': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Coast': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Beaches_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Beaches_Deep_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Background_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Background_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Impacted_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Impacted_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Air': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0}}}
In [ ]:
import pandas as pd
from utopia.utopia import utopiaModel
from utopia.results_processing.process_results import *
from scipy.stats import spearmanr
from utopia.monte_carlo.montecarlo_analysis_paper import extract_log_rel_abundance
from utopia.monte_carlo.montecarlo_analysis_paper import plot_obs_vs_model_with_metrics_True


# Run the model for each emission scenario and target compartment
LDP_simulations_results_all={}
for art in overlay_emission_scenarios.keys():
    print(f"Running Monte Carlo analysis for article: {art}")
    LDP_simulations_results=[]
    for comp in overlay_emission_scenarios[art]:
        # Set emissions to that compartment and include it in base_data file
        LDP_data["emiss_dict_g_s"]= set_emission(LDP_data["emiss_dict_g_s"].copy(), comp, "e", 100)
        for comp_T in overlay_compartments_mapping[art]:
            emission_comp=comp
            target_comp=comp_T
            model = utopiaModel(config=config_data, data=LDP_data)
            model.run()
            processor = ResultsProcessor(model)  # Custom processor to handle results
            processor.estimate_flows()
            processor.generate_flows_dict()
            processor.process_results()
            processor.extract_results_by_compartment()
            df = processor.results_by_comp
            df2 = processor.Results_extended
            # processor.estimate_exposure_indicators()

            # Process model outputs into log-relative abundances per size fraction and compare with observed data
            observed_file = "../src/utopia/data/observed_data_long.xlsx"

            observed_df = pd.read_excel(observed_file)

            observed_df = observed_df.rename(columns={
            "dataset identifier": "Dataset",
            "Article name": "Article",
            "log‑transformed size": "log_Size",
            "log‑transformed abundance": "log_Abundance",
        }
    )
            obs_subset = observed_df[observed_df["Article"] == art]
            x_obs_all = obs_subset["log_Size"].astype(float).values
            y_obs_all = obs_subset["log_Abundance"].astype(float).values

            if len(x_obs_all) > 2:
                slope_obs, intercept_obs = np.polyfit(x_obs_all, y_obs_all, 1)
            else:
                slope_obs, intercept_obs = np.nan, np.nan

            result = {}

            # comp_relative_abundance_resultsaccording to target compartment set in the input parameters

            # Exclude size bins that are not withing the observed data range (0.5 and 5 um)
            excluded_sizes = [0.5, 5]
            filtered_Results = df2[~df2["Size_Fraction_um"].isin(excluded_sizes)]
            rel_abun = extract_log_rel_abundance(
                filtered_Results,
                compartment=target_comp,
                value_col="number_of_particles",
            )

            if rel_abun.empty:
                # fill with NaNs
                result.update(
                    {
                        "Spearman_r": np.nan,
                        "Spearman_p": np.nan,
                        "Pass_Spearman": False,
                        "RMSE": np.nan,
                        "R_squared": np.nan,
                        "Model_slope": np.nan,
                        "Model_intercept": np.nan,
                        "Target_compartment": target_comp,
                        "Emission_compartment": emission_comp,
                    }
                )

            else:

                x_mod_all = rel_abun["log_size"].values
                y_mod_all = rel_abun["log_rel_abundance"].values

                # Spearman correlation
                r_value, p_value = spearmanr(x_mod_all, y_mod_all)

                spearman_threshold = -1

                # Initialize metrics
                rmse, r2, slope_mod, intercept_mod = np.nan, np.nan, np.nan, np.nan
                if np.isnan(r_value):
                    pass_spearman = False
                elif (r_value) == spearman_threshold:
                    pass_spearman = True
                else:
                    pass_spearman = False

                # Compute RMSE, R², slope, intercept only if threshold passed

                if pass_spearman == True and len(x_mod_all) > 2 and len(x_obs_all) > 2:
                    slope_mod, intercept_mod = np.polyfit(x_mod_all, y_mod_all, 1)

                    # Align with observed range
                    x_min = max(x_obs_all.min(), x_mod_all.min())
                    x_max = min(x_obs_all.max(), x_mod_all.max())
                    mask_obs = (x_obs_all >= x_min) & (x_obs_all <= x_max)
                    x_obs_filt = x_obs_all[mask_obs]
                    y_obs_filt = y_obs_all[mask_obs]

                    if len(x_obs_filt) > 2:
                        pred_y = slope_mod * x_obs_filt + intercept_mod
                        ss_res = np.sum((y_obs_filt - pred_y) ** 2)
                        ss_tot = np.sum((y_obs_filt - np.mean(y_obs_filt)) ** 2)
                        r2 = 1 - ss_res / ss_tot if ss_tot > 0 else np.nan
                        rmse = np.sqrt(ss_res / len(x_obs_filt))

                        # Plot observed vs model with metrics only if spearman test is true
                        plot_obs_vs_model_with_metrics_True(
                            x_obs_all,
                            y_obs_all,
                            x_mod_all,
                            y_mod_all,
                            comp_T,
                            art,
                            rmse,
                            r2,
                            MP_density=model.MPdensity_kg_m3,
                            FI=model.FI,
                            t_half_deg=model.t_half_deg_free,
                            t_frag=model.t_frag_gen_FreeSurfaceWater,
                        )

                        # Store all metrics in result dict
                        result.update(
                            {
                                "Spearman_r": r_value,
                                "Spearman_p": p_value,
                                "Pass_Spearman": pass_spearman,
                                "RMSE": rmse,
                                "R_squared": r2,
                                "Model_slope": slope_mod,
                                "Model_intercept": intercept_mod,
                                "Target_compartment": target_comp,
                                "Emission_compartment": emission_comp,
                            }
                        )
                    else:
                        # If not enough points to compute metrics, store NaNs
                        result.update(
                            {
                                "Spearman_r": np.nan,
                                "Spearman_p": np.nan,
                                "Pass_Spearman": False,
                                "RMSE": np.nan,
                                "R_squared": np.nan,
                                "Model_slope": np.nan,
                                "Model_intercept": np.nan,
                                "Target_compartment": target_comp,
                                "Emission_compartment": emission_comp,
                            }
                        )
                else:
                    # Store all metrics in result dict
                    result.update(
                        {
                            "Spearman_r": np.nan,
                            "Spearman_p": np.nan,
                            "Pass_Spearman": False,
                            "RMSE": np.nan,
                            "R_squared": np.nan,
                            "Model_slope": np.nan,
                            "Model_intercept": np.nan,
                            "Target_compartment": target_comp,
                            "Emission_compartment": emission_comp,
                        }
                    )
            LDP_simulations_results.append(result)
    LDP_simulations_results_all[art]=LDP_simulations_results    
                

            
            
Running Monte Carlo analysis for article: Sea Sediment | Bergmann
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running Monte Carlo analysis for article: Sea Surface all | Cai
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fragments | Enders
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Enders
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in water | Eo
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fibers in water | Eo
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in sediment | Eo
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running Monte Carlo analysis for article: Fibers in sediment | Eo
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running Monte Carlo analysis for article: Sea Surface all | Erni-Cassola
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fresh water sediments | Imhof
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L1
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L2
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L3
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L4
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: FP all | Scheurer
No description has been provided for this image
c:\Users\PradoDomercq\AppData\Local\miniconda3\envs\utopia_envP11\Lib\site-packages\pandas\core\arraylike.py:402: RuntimeWarning: divide by zero encountered in log10
  result = getattr(ufunc, method)(*inputs, **kwargs)
Running Monte Carlo analysis for article: Sea Surface Fragments | Song
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Song
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Zhang
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
LDP_simulations_results_all
In [ ]:
# Flatten it into a list of rows
rows = []
for article, records in LDP_simulations_results_all.items():
    for record in records:
        record["article"] = article  # Add outer key as a column
        rows.append(record)

# Create DataFrame
df = pd.DataFrame(rows)

# 👇 Drop rows with any NaN values
df_clean = df.dropna()

# Reorder columns (optional)
cols = ["article"] + [c for c in df_clean .columns if c != "article"]
df_clean_LDP  = df_clean [cols]
In [ ]:
LDP_correlations_shorted=df_clean_LDP.sort_values("RMSE", ascending=True)
LDP_correlations_shorted.head(20)
Out[ ]:
article Spearman_r Spearman_p Pass_Spearman RMSE R_squared Model_slope Model_intercept Target_compartment Emission_compartment
52 Sea Surface all | Isobe L2 -1.0 0.0 True 0.190007 0.553078 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
56 Sea Surface all | Isobe L3 -1.0 0.0 True 0.191875 0.533865 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
49 Sea Surface all | Isobe L1 -1.0 0.0 True 0.214804 0.730070 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
61 Sea Surface all | Isobe L4 -1.0 0.0 True 0.214970 0.517181 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
59 Sea Surface all | Isobe L3 -1.0 0.0 True 0.235090 0.300253 -0.753680 3.025382 Ocean_Surface_Water Coast_Surface_Water
60 Sea Surface all | Isobe L4 -1.0 0.0 True 0.236564 0.415310 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
57 Sea Surface all | Isobe L3 -1.0 0.0 True 0.253886 0.183888 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
73 Sea Surface Fibers | Song -1.0 0.0 True 0.257249 0.258891 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
55 Sea Surface all | Isobe L2 -1.0 0.0 True 0.261469 0.153687 -0.753680 3.025382 Ocean_Surface_Water Coast_Surface_Water
53 Sea Surface all | Isobe L2 -1.0 0.0 True 0.272891 0.078126 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
47 Fresh water sediments | Imhof -1.0 0.0 True 0.272997 0.282320 -2.766529 6.521509 Surface_Freshwater Impacted_Soil_Surface
48 Sea Surface all | Isobe L1 -1.0 0.0 True 0.283553 0.529637 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
22 Fragments in water | Eo -1.0 0.0 True 0.286008 0.830587 -1.642383 4.629835 Bulk_Freshwater Surface_Freshwater
72 Sea Surface Fibers | Song -1.0 0.0 True 0.291413 0.048971 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
63 Sea Surface all | Isobe L4 -1.0 0.0 True 0.324975 -0.103392 -0.753680 3.025382 Ocean_Surface_Water Coast_Surface_Water
77 Sea Surface all | Zhang -1.0 0.0 True 0.397532 0.692880 -1.235674 4.232543 Ocean_Surface_Water Surface_Freshwater
76 Sea Surface all | Zhang -1.0 0.0 True 0.401689 0.686423 -0.917455 3.381548 Coast_Surface_Water Surface_Freshwater
51 Sea Surface all | Isobe L1 -1.0 0.0 True 0.404384 0.043350 -0.753680 3.025382 Ocean_Surface_Water Coast_Surface_Water
19 Sea Surface Fibers | Enders -1.0 0.0 True 0.415345 -0.105149 -0.753680 3.025382 Ocean_Surface_Water Coast_Surface_Water
16 Sea Surface Fibers | Enders -1.0 0.0 True 0.429575 -0.182169 -0.743555 3.010753 Coast_Surface_Water Ocean_Surface_Water

Run model for high density polymer (HDP) scenario derived from MC

In [ ]:
# Define modifications (follow the structure provided in the default configuration data (data_data))
modifications_HDP = {
    "MPdensity_kg_m3": 1150,
    "MP_composition": "LDP",
    'FI': 0.8,
    "t_half_deg_free": 4000,
    "t_frag_gen_FreeSurfaceWater": 50
}
In [ ]:
HDP_data=data_data.copy()
HDP_data["MPdensity_kg_m3"]= modifications_HDP["MPdensity_kg_m3"]
HDP_data["MP_composition"]= modifications_HDP["MP_composition"]
HDP_data["FI"]= modifications_HDP["FI"]
HDP_data["t_half_deg_free"]= modifications_HDP["t_half_deg_free"]
HDP_data["t_frag_gen_FreeSurfaceWater"]= modifications_HDP["t_frag_gen_FreeSurfaceWater"]    
HDP_data
Out[ ]:
{'MPdensity_kg_m3': 1150,
 'MP_composition': 'LDP',
 'shape': 'sphere',
 'MP_form': 'freeMP',
 'FI': 0.8,
 't_half_deg_free': 4000,
 'heter_deg_factor': 10,
 'biof_deg_factor': 0.5,
 'factor_deepWater_soilSurface': 10,
 'factor_sediment': 100,
 't_frag_gen_FreeSurfaceWater': 50,
 'biof_frag_factor': 2,
 'heter_frag_factor': 100,
 'emiss_dict_g_s': {'Ocean_Surface_Water': {'a': 0,
   'b': 0,
   'c': 0,
   'd': 0,
   'e': 100},
  'Ocean_Mixed_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Ocean_Column_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Coast_Surface_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Coast_Column_Water': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Surface_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Bulk_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Freshwater': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Ocean': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Sediment_Coast': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Beaches_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Beaches_Deep_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Background_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Background_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Impacted_Soil_Surface': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Impacted_Soil': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0},
  'Air': {'a': 0, 'b': 0, 'c': 0, 'd': 0, 'e': 0}}}
In [ ]:
# Run the model for each emission scenario and target compartment
HDP_simulations_results_all={}
for art in overlay_emission_scenarios.keys():
    print(f"Running Monte Carlo analysis for article: {art}")
    HDP_simulations_results=[]
    for comp in overlay_emission_scenarios[art]:
        # Set emissions to that compartment and include it in base_data file
        HDP_data["emiss_dict_g_s"]= set_emission(HDP_data["emiss_dict_g_s"].copy(), comp, "e", 100)
        for comp_T in overlay_compartments_mapping[art]:
            emission_comp=comp
            target_comp=comp_T
            model = utopiaModel(config=config_data, data=HDP_data)
            model.run()
            processor = ResultsProcessor(model)  # Custom processor to handle results
            processor.estimate_flows()
            processor.generate_flows_dict()
            processor.process_results()
            processor.extract_results_by_compartment()
            df = processor.results_by_comp
            df2 = processor.Results_extended
            # processor.estimate_exposure_indicators()

            # Process model outputs into log-relative abundances per size fraction and compare with observed data
            observed_file = "../src/utopia/data/observed_data_long.xlsx"

            observed_df = pd.read_excel(observed_file)

            observed_df = observed_df.rename(columns={
            "dataset identifier": "Dataset",
            "Article name": "Article",
            "log‑transformed size": "log_Size",
            "log‑transformed abundance": "log_Abundance",
        }
    )
            obs_subset = observed_df[observed_df["Article"] == art]
            x_obs_all = obs_subset["log_Size"].astype(float).values
            y_obs_all = obs_subset["log_Abundance"].astype(float).values

            if len(x_obs_all) > 2:
                slope_obs, intercept_obs = np.polyfit(x_obs_all, y_obs_all, 1)
            else:
                slope_obs, intercept_obs = np.nan, np.nan

            result = {}

            # comp_relative_abundance_resultsaccording to target compartment set in the input parameters

            # Exclude size bins that are not withing the observed data range (0.5 and 5 um)
            excluded_sizes = [0.5, 5]
            filtered_Results = df2[~df2["Size_Fraction_um"].isin(excluded_sizes)]
            rel_abun = extract_log_rel_abundance(
                filtered_Results,
                compartment=target_comp,
                value_col="number_of_particles",
            )

            if rel_abun.empty:
                # fill with NaNs
                result.update(
                    {
                        "Spearman_r": np.nan,
                        "Spearman_p": np.nan,
                        "Pass_Spearman": False,
                        "RMSE": np.nan,
                        "R_squared": np.nan,
                        "Model_slope": np.nan,
                        "Model_intercept": np.nan,
                        "Target_compartment": target_comp,
                        "Emission_compartment": emission_comp,
                    }
                )

            else:

                x_mod_all = rel_abun["log_size"].values
                y_mod_all = rel_abun["log_rel_abundance"].values

                # Spearman correlation
                r_value, p_value = spearmanr(x_mod_all, y_mod_all)

                spearman_threshold = -1

                # Initialize metrics
                rmse, r2, slope_mod, intercept_mod = np.nan, np.nan, np.nan, np.nan
                if np.isnan(r_value):
                    pass_spearman = False
                elif (r_value) == spearman_threshold:
                    pass_spearman = True
                else:
                    pass_spearman = False

                # Compute RMSE, R², slope, intercept only if threshold passed

                if pass_spearman == True and len(x_mod_all) > 2 and len(x_obs_all) > 2:
                    slope_mod, intercept_mod = np.polyfit(x_mod_all, y_mod_all, 1)

                    # Align with observed range
                    x_min = max(x_obs_all.min(), x_mod_all.min())
                    x_max = min(x_obs_all.max(), x_mod_all.max())
                    mask_obs = (x_obs_all >= x_min) & (x_obs_all <= x_max)
                    x_obs_filt = x_obs_all[mask_obs]
                    y_obs_filt = y_obs_all[mask_obs]

                    if len(x_obs_filt) > 2:
                        pred_y = slope_mod * x_obs_filt + intercept_mod
                        ss_res = np.sum((y_obs_filt - pred_y) ** 2)
                        ss_tot = np.sum((y_obs_filt - np.mean(y_obs_filt)) ** 2)
                        r2 = 1 - ss_res / ss_tot if ss_tot > 0 else np.nan
                        rmse = np.sqrt(ss_res / len(x_obs_filt))

                        # Plot observed vs model with metrics only if spearman test is true
                        plot_obs_vs_model_with_metrics_True(
                            x_obs_all,
                            y_obs_all,
                            x_mod_all,
                            y_mod_all,
                            comp_T,
                            art,
                            rmse,
                            r2,
                            MP_density=model.MPdensity_kg_m3,
                            FI=model.FI,
                            t_half_deg=model.t_half_deg_free,
                            t_frag=model.t_frag_gen_FreeSurfaceWater,
                        )

                        # Store all metrics in result dict
                        result.update(
                            {
                                "Spearman_r": r_value,
                                "Spearman_p": p_value,
                                "Pass_Spearman": pass_spearman,
                                "RMSE": rmse,
                                "R_squared": r2,
                                "Model_slope": slope_mod,
                                "Model_intercept": intercept_mod,
                                "Target_compartment": target_comp,
                                "Emission_compartment": emission_comp,
                            }
                        )
                    else:
                        # If not enough points to compute metrics, store NaNs
                        result.update(
                            {
                                "Spearman_r": np.nan,
                                "Spearman_p": np.nan,
                                "Pass_Spearman": False,
                                "RMSE": np.nan,
                                "R_squared": np.nan,
                                "Model_slope": np.nan,
                                "Model_intercept": np.nan,
                                "Target_compartment": target_comp,
                                "Emission_compartment": emission_comp,
                            }
                        )
                else:
                    # Store all metrics in result dict
                    result.update(
                        {
                            "Spearman_r": np.nan,
                            "Spearman_p": np.nan,
                            "Pass_Spearman": False,
                            "RMSE": np.nan,
                            "R_squared": np.nan,
                            "Model_slope": np.nan,
                            "Model_intercept": np.nan,
                            "Target_compartment": target_comp,
                            "Emission_compartment": emission_comp,
                        }
                    )
            HDP_simulations_results.append(result)
    HDP_simulations_results_all[art]=HDP_simulations_results    
                

            
            
Running Monte Carlo analysis for article: Sea Sediment | Bergmann
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Cai
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fragments | Enders
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Enders
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in water | Eo
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fibers in water | Eo
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fragments in sediment | Eo
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fibers in sediment | Eo
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Erni-Cassola
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Fresh water sediments | Imhof
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L1
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L2
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L3
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Isobe L4
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: FP all | Scheurer
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fragments | Song
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface Fibers | Song
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Running Monte Carlo analysis for article: Sea Surface all | Zhang
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
In [ ]:
# Flatten it into a list of rows
rows = []
for article, records in HDP_simulations_results_all.items():
    for record in records:
        record["article"] = article  # Add outer key as a column
        rows.append(record)

# Create DataFrame
df2 = pd.DataFrame(rows)

# 👇 Drop rows with any NaN values
df2_clean = df2.dropna()

# Reorder columns (optional)
cols = ["article"] + [c for c in df2_clean .columns if c != "article"]
df2_clean_HDP  = df2_clean [cols]

HDP_correlations_shorted=df2_clean_HDP.sort_values("RMSE", ascending=True)
HDP_correlations_shorted.head(20)
Out[ ]:
article Spearman_r Spearman_p Pass_Spearman RMSE R_squared Model_slope Model_intercept Target_compartment Emission_compartment
32 Fragments in sediment | Eo -1.0 0.0 True 0.241373 0.777135 -1.488925 4.386381 Sediment_Coast Surface_Freshwater
15 Sea Surface Fragments | Enders -1.0 0.0 True 0.407572 0.431465 -3.425203 7.086679 Ocean_Surface_Water Coast_Surface_Water
38 Fibers in sediment | Eo -1.0 0.0 True 0.461916 -3.334500 -1.488925 4.386381 Sediment_Coast Surface_Freshwater
12 Sea Surface Fragments | Enders -1.0 0.0 True 0.469533 0.245464 -2.248370 5.139047 Coast_Surface_Water Ocean_Surface_Water
41 Sea Surface all | Erni-Cassola -1.0 0.0 True 0.545142 -1.071792 -3.425203 7.086679 Ocean_Surface_Water Coast_Surface_Water
43 Sea Surface all | Erni-Cassola -1.0 0.0 True 0.599766 -1.507791 -4.372815 9.205297 Ocean_Surface_Water Impacted_Soil_Surface
42 Sea Surface all | Erni-Cassola -1.0 0.0 True 0.622319 -1.699942 -4.427788 9.287040 Coast_Surface_Water Impacted_Soil_Surface
5 Sea Sediment | Bergmann -1.0 0.0 True 0.779936 -8.965140 -2.544950 6.008366 Sediment_Ocean Coast_Column_Water
3 Sea Sediment | Bergmann -1.0 0.0 True 0.787404 -9.156869 -2.518483 5.963838 Sediment_Ocean Coast_Surface_Water
68 Sea Surface Fragments | Song -1.0 0.0 True 0.801651 -0.195902 -2.118969 4.983485 Coast_Surface_Water Surface_Freshwater
6 Sea Surface all | Cai -1.0 0.0 True 0.818705 -0.920971 -2.118969 4.983485 Coast_Surface_Water Surface_Freshwater
31 Fragments in sediment | Eo -1.0 0.0 True 1.026439 -3.030231 -2.582969 6.059751 Sediment_Ocean Surface_Freshwater
1 Sea Sediment | Bergmann -1.0 0.0 True 1.230411 -23.800792 -1.641612 4.674583 Sediment_Ocean Ocean_Surface_Water
0 Sea Sediment | Bergmann -1.0 0.0 True 1.230878 -23.819628 -1.513833 4.421349 Sediment_Coast Ocean_Surface_Water
4 Sea Sediment | Bergmann -1.0 0.0 True 1.247517 -24.495181 -1.485210 4.381168 Sediment_Coast Coast_Column_Water
2 Sea Sediment | Bergmann -1.0 0.0 True 1.247524 -24.495471 -1.485202 4.381159 Sediment_Coast Coast_Surface_Water
46 Fresh water sediments | Imhof -1.0 0.0 True 1.379896 -17.336091 -4.387324 9.220131 Bulk_Freshwater Impacted_Soil_Surface
47 Fresh water sediments | Imhof -1.0 0.0 True 1.379904 -17.336285 -4.387332 9.220144 Surface_Freshwater Impacted_Soil_Surface
72 Sea Surface Fibers | Song -1.0 0.0 True 1.453456 -22.658010 -2.118969 4.983485 Coast_Surface_Water Surface_Freshwater
29 Fragments in sediment | Eo -1.0 0.0 True 1.511737 -7.742109 -3.661678 8.303263 Sediment_Coast Impacted_Soil_Surface